feat(config): add v6.1 ruleset and pin RNG seeds from submission ruleset#389
Conversation
Adds the MLPerf Inference v6.1 RoundRuleset (schedule/sample_index seeds from loadgen/mlperf.conf; per-model latency targets unchanged from v5.1) and makes it CURRENT. The registry now registers every known round by version, so both v5.1 and v6.1 are resolvable. When a config carries submission_ref, _resolve_and_validate now pins the runtime RNG seeds from the selected ruleset during construction — before the config is dumped to the report dir, so the persisted config.yaml, RuntimeSettings, and report all reflect the seeds that actually ran. The ruleset value wins over any user-supplied seed (mirrors LoadGen locking core seeds from user.conf). Lenient by design: an unregistered ruleset leaves the config unchanged, so placeholder/non-submission configs are unaffected. Duration/latency overrides and the runtime-path integration (surfacing ruleset latency targets in the report) are deferred to a follow-up. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
MLCommons CLA bot All contributors have signed the MLCommons CLA ✍️ ✅ |
There was a problem hiding this comment.
Code Review
This pull request introduces the MLPerf Inference v6.1 ruleset, including its official RNG seeds, and updates the default submission template to reference v6.1. It also implements a mechanism in BenchmarkConfig to automatically override and pin runtime RNG seeds based on the selected submission ruleset, ensuring compliance. Feedback is provided regarding the definition of _v6_1, where copying the mutable benchmark_rulesets dictionary instead of sharing its reference with _v5_1 is recommended to prevent potential side effects.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
arekay-nv
left a comment
There was a problem hiding this comment.
Review Council — Multi-AI Code Review
Reviewed by: Codex + Claude | Depth: thorough
Codex: no actionable correctness issues. Claude: 5 posted (1 shared-dict finding on rules.py:282 was dropped as a duplicate of the existing gemini-code-assist comment). See the summary comment below for the tiered breakdown.
Review Council — Multi-AI Code ReviewReviewed by: Codex (gpt-5.5, xhigh) + Claude | Depth: thorough Codex: "changes consistently register the new MLCommons round and apply the selected ruleset seeds into runtime configuration without introducing an evident functional regression. No actionable correctness issues." Claude: 6 findings; 1 dropped as a duplicate of the existing No critical/high issues. The core logic (frozen-model mutation via 🟡 Should Fix (medium)
🔵 Consider (low)
Commit hygiene: 1 commit, 0 fixups — clean. |
Signed-off-by: Rashid Kaleem <230885705+arekay-nv@users.noreply.github.com>
arekay-nv
left a comment
There was a problem hiding this comment.
Review Council — Multi-AI Code Review (re-review of 346bd6b)
Reviewed by: Codex (gpt-5.5, xhigh) + Claude | Depth: thorough
Codex: no introduced correctness issues. Claude: 7 findings — 6 posted inline below, 1 summary-only (outside diff). The prior run's 6 findings are all resolved by 346bd6b. See the summary comment for the tiered breakdown.
Review Council — Multi-AI Code Review (re-review of
|
| # | File | Line | Category | Summary |
|---|---|---|---|---|
| 1 | config/rulesets/mlcommons/rules.py |
276 | documentation | Comment references docs/RANDOM_SEEDS.md, which is not tracked in the repo — a dangling ref that already misled a reviewer (violates AGENTS.md). Commit the doc or inline the rationale. |
| 2 | config/schema.py |
1046 | data-integrity | A type=SUBMISSION config with an unregistered submission_ref.ruleset silently falls back to default seeds (42/42) → non-compliant submission that looks valid. Make it a hard error for SUBMISSION. |
🔵 Consider (low)
| # | File | Line | Category | Summary |
|---|---|---|---|---|
| 3 | config/rulesets/mlcommons/rules.py |
283 | design | rules.copy() is a 2-level copy, not the "Deep copy" the commit claims — leaf rulesets (with a mutable reported_metrics list) are still shared with v5.1. Latent; deepcopy or a shared-immutable note. |
| 4 | config/ruleset_registry.py |
52 | api-contract | New duplicate guard makes the module non-idempotent — a re-import / importlib.reload now raises mid-import instead of silently overwriting. |
| 5 | config/schema.py |
1062 | error-handling | model_copy(update=...) bypasses validation and field-name checks; the hardcoded "..._random_seed" keys are decoupled from RuntimeConfig — a future field rename fails silently. |
| 6 | tests/unit/config/test_schema.py |
827 | testing | The mirror partial-None case (scheduler set, sample_index_rng_seed=None) is untested; that is not None False branch is only hit with an already-empty updates. |
| 7 | tests/unit/config/test_schema.py |
167 | documentation | Pre-existing test pins ruleset="mlperf-inference-v6.0", which is not registered (only v5.1/v6.1). Outside the diff, so not posted inline — with the new override it now logs a "not registered" warning every run. Bump to v6.1. |
Commit hygiene: 2 commits, 0 fixups — clean.
Signed-off-by: Rashid Kaleem <230885705+arekay-nv@users.noreply.github.com>
|
with the following section in the client config file (for deepseek for instance):
|
arekay-nv
left a comment
There was a problem hiding this comment.
Review Council — Multi-AI Code Review (independent)
Reviewed by Codex + Claude | depth: thorough | posted inline: 4
Codex reported no correctness issues. Claude's findings below (none critical/high — the PR is fundamentally sound).
Review Council — Multi-AI Code Review (independent)Reviewed by Codex + Claude | depth: thorough These reviews were run independently of any prior context — Codex in an isolated worktree, Claude fresh — assessing the diff on its own merits (no assumed verification). Codex: no correctness issues found (reviewed against 🟡 Should Fix (medium)
🔵 Consider (low)
Commit hygiene: 3 commits, clean — no squash needed. |
Signed-off-by: arekay-nv <230885705+arekay-nv@users.noreply.github.com>
Signed-off-by: Rashid Kaleem <230885705+arekay-nv@users.noreply.github.com>
Adds the MLPerf Inference v6.1 RoundRuleset (schedule/sample_index seeds from loadgen/mlperf.conf; per-model latency targets unchanged from v5.1) and makes it CURRENT. The registry now registers every known round by version, so both v5.1 and v6.1 are resolvable.
When a config carries submission_ref, _resolve_and_validate now pins the runtime RNG seeds from the selected ruleset during construction — before the config is dumped to the report dir, so the persisted config.yaml, RuntimeSettings, and report all reflect the seeds that actually ran. The ruleset value wins over any user-supplied seed (mirrors LoadGen locking core seeds from user.conf). Lenient by design: an unregistered ruleset leaves the config unchanged, so placeholder/non-submission configs are unaffected.
Duration/latency overrides and the runtime-path integration (surfacing ruleset latency targets in the report) are deferred to a follow-up.
What does this PR do?
Type of change
Related issues
Testing
Checklist